#ifndef MODEL_H
#define MODEL_H

#include "mesh.h"
#include <QObject>
#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>
#include<QMap>
#include<QOpenGLTexture>


class Model : public QObject,QOpenGLFunctions
{
    Q_OBJECT
public:
    Model(const QString &path);
    void Draw(QOpenGLShaderProgram &shader);
    ~Model();
private:
    QVector<Texture> textures_loaded;
    QVector<Mesh*> meshes;// 相信网格
    QString directory;
    void loadModel(const QString& path); // 加载整体模型
    void processNode(aiNode *node,const aiScene *scene);
    Mesh* processMesh(aiMesh *mesh, const aiScene *scene); // 存储mesh信息
    QVector<Texture> loadMaterialTextures(aiMaterial *mat, aiTextureType type,
                                                 QString typeName); // 提取贴图信息
};

#endif // MODEL_H
